package com.ruoyi.caipiao.utils;

import java.util.*;

/**
 * @author wangcen
 * @date 2025/6/7 19:49
 */

public class MapValueSortUtil {

    /**
     * 把key 根据value的大小排序
     * @param map
     * @param sortType null 或  asc  正序  ，   desc 倒叙
     * @return
     */
    public static List<String> sortMapByValue(Map<String, Integer> map, String sortType) {
        int size = map.size();
        //通过map.entrySet()将map转换为"1.B.1.e=78"形式的list集合
        List<Map.Entry<String, Integer>> list = new ArrayList<>(size);
        list.addAll(map.entrySet());
        //通过Collections.sort()排序
        list.sort((Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) -> {
            // compareTo方法 (x < y) ? -1 : ((x == y) ? 0 : 1)
            // 倒序：o2.getValue().compareTo(o1.getValue())
            // 顺序：o1.getValue().compareTo(o2.getValue())
            if ("desc".equals(sortType)) {
                return o2.getValue().compareTo(o1.getValue());
            }
            return o1.getValue().compareTo(o2.getValue());
        });
        List<String> keys = new ArrayList<>(size);
        for (Map.Entry<String, Integer> entry : list) {
            // 得到排序后的键值
            keys.add(entry.getKey());
        }
        return keys;
    }
}
